import 'package:flutter/material.dart';
import 'package:mandoby/core/utils/app_colors.dart';

import '../../core/app_export.dart';

extension on TextStyle {
  TextStyle get cairo {
    return copyWith(
      fontFamily: 'Cairo',
    );
  }
}

/// A collection of pre-defined text styles for customizing text appearance,
/// categorized by different font families and weights.
/// Additionally, this class includes extensions on [TextStyle] to easily applyecific font families to text.
class CustomTextStyles {
  // Body text style

  static  TextStyle fontSize33 = TextStyle(fontSize: 33);
  static  TextStyle fontSize36 = TextStyle(fontSize: 36);

  static  TextStyle fontSize28 = TextStyle(fontSize: 28);
  static  TextStyle fontSize24 = TextStyle(fontSize: 24);
  static  TextStyle fontSize20 = TextStyle(fontSize: 20);
  static  TextStyle fontSize18 = TextStyle(fontSize: 18);
  static  TextStyle fontSize19 = TextStyle(fontSize: 19);
  static  TextStyle fontSize16 = TextStyle(fontSize: 16);
  static  TextStyle fontSize15 = TextStyle(fontSize: 15);
  static  TextStyle fontSize17 = TextStyle(fontSize: 17);
  static  TextStyle fontSize14 = TextStyle(fontSize: 14);
  static  TextStyle fontSize12 = TextStyle(fontSize: 12);
  static  TextStyle fontSize13 = TextStyle(fontSize: 13);
  static  TextStyle fontSize11 = TextStyle(fontSize: 11);
  static  TextStyle fontSize10 = TextStyle(fontSize: 10);
  static  TextStyle fontSize21 = TextStyle(fontSize: 21);


  ///FontWeight
  static const TextStyle fontWeight800 = TextStyle(fontWeight: FontWeight.w800);
  static const TextStyle fontWeight700 = TextStyle(fontWeight: FontWeight.w700);
  static const TextStyle fontWeight600 = TextStyle(fontWeight: FontWeight.w600);
  static const TextStyle fontWeight500 = TextStyle(fontWeight: FontWeight.w500);
  static const TextStyle fontWeight400 = TextStyle(fontWeight: FontWeight.w400);


  static TextStyle get font36whiteA700W600 =>
      fontWeight600
      .merge(fontSize33)
      .copyWith(color: AppColors.whiteA700);
  static TextStyle get font32W700Black =>
      fontWeight700
      .merge(fontSize33)
      .copyWith(color: AppColors.black900);

  static TextStyle get font20primary700 =>
      fontWeight700
      .merge(fontSize20)
      .copyWith(color: AppColors.primary);

  static TextStyle get font19black400 =>
      fontWeight400
      .merge(fontSize19)
      .copyWith(color: AppColors.black900);

  static TextStyle get font15black500 =>
      fontWeight500
      .merge(fontSize15)
      .copyWith(color: AppColors.black900);
  static TextStyle get font20black66500 =>
      fontWeight500
      .merge(fontSize20)
      .copyWith(color: AppColors.black66);

  static TextStyle get font17gray600 =>
      fontWeight600
      .merge(fontSize17)
      .copyWith(color: AppColors.black600);


  static TextStyle get font18White800 =>
      fontWeight800
      .merge(fontSize18)
      .copyWith(color: AppColors.whiteA700);
  static TextStyle get font17white700 =>
      fontWeight700
      .merge(fontSize17)
      .copyWith(color: AppColors.whiteA700);
  static TextStyle get font17black500 =>
      fontWeight500
      .merge(fontSize17)
      .copyWith(color: AppColors.black900);

  static TextStyle get font28whiteA700w800 =>
      fontWeight700
      .merge(fontSize28)
      .copyWith(color: AppColors.whiteA700);
  static TextStyle get font24bBlack400 =>
      fontWeight400
      .merge(fontSize24)
      .copyWith(color: AppColors.black900);


  static TextStyle get font24Primary700 =>
      fontWeight700
          .merge(fontSize24)
          .copyWith(color: AppColors.primary);

  static TextStyle get font13lightBlue400 =>
      fontWeight400
          .merge(fontSize13)
          .copyWith(color: AppColors.lightBlue,decoration: TextDecoration.underline);

  static TextStyle get font20black500 =>
      fontWeight500
          .merge(fontSize20)
          .copyWith(color: AppColors.black900);

  static TextStyle get font14black800 =>
      fontWeight800
          .merge(fontSize14)
          .copyWith(color: AppColors.black900);
  static TextStyle get font16black66800 =>
      fontWeight800
          .merge(fontSize16)
          .copyWith(color: AppColors.black66);
  static TextStyle get font14black55400 =>
      fontWeight400
          .merge(fontSize14)
          .copyWith(color: AppColors.black55);

  static TextStyle get font24black800 =>
      fontWeight800
          .merge(fontSize24)
          .copyWith(color: AppColors.black900);

  static TextStyle get font20whiteA700w400 =>
      fontWeight400
          .merge(fontSize20)
          .copyWith(color: AppColors.whiteA700);
}
